题目地址 (opens new window)

  • 🙂 第一次练习

    这个题,应该是可以直接用冒泡排序,不过提示超时,说明就需要用更高效的排序。

  • 😄 第二次练习

# 冒泡排序

解题代码

class Solution {
    public int[] sortArray(int[] nums) {
        for(int i = 0 ; i < nums.length ; i ++) {
            for (int j = 0; j < nums.length; j ++) {
                if (nums[i] < nums[j]) {
                    int t = nums[i];
                    nums[i] = nums[j];
                    nums[j] = t;
                }
            }
        }

        return nums;
    }
}

# 选择排序

image-20200331085836615

勉强可过, 但是排序的知识已经忘得差不多了,还要恶补一下才行。

class Solution {
    public int[] sortArray(int[] nums) {
        for (int i = 0; i < nums.length; i ++) {
            int idx = 0;
            int min = Integer.MAX_VALUE;
            for (int j = i; j < nums.length ; j ++) {
                if (nums[j] < min) {
                    idx = j;
                    min = nums[j];
                }
            }
            nums[idx] = nums[i];
            nums[i] = min;
        }
        return nums;
    }
}

# 插入排序

执行用时 :716 ms, 在所有 Java 提交中击败了11.51%的用户

内存消耗 :47.5 MB, 在所有 Java 提交中击败了7.38%的用户

class Solution {
    public int[] sortArray(int[] nums) {
        for (int i = 1; i < nums.length; i++) {
            int value = nums[i];

            int j = i - 1;
            for (; j >= 0; j--) {
                if (nums[j] > value) {
                    nums[j + 1] = nums[j];
                } else {
                    break;
                }
            }
            nums[j + 1] = value;
        }

        return nums;
    }
}

# 易错点

  • 易错项 1
最后编辑时间: 7/14/2020, 9:21:47 AM